package br.pucrs.prototipoonline.facade;

import java.sql.SQLException;
import java.util.Collection;

import org.apache.log4j.Logger;

import br.pucrs.prototipoonline.dao.ElementosDAO;
import br.pucrs.prototipoonline.exceptions.POApplicationException;
import br.pucrs.prototipoonline.vo.ElementoVO;
import br.pucrs.prototipoonline.vo.UsuarioVO;


/**
 * 
 * @author Ricardo Luckei
 * @author Gelson Gentil
 *
 */
public class ElementosFacade extends BaseFacade {
	private static Logger logger = Logger.getLogger(ElementosFacade.class);
	private ElementosDAO elementosDAO = null;
	
	public ElementosFacade(UsuarioVO usuarioVo) {
		super(usuarioVo);
		elementosDAO = new ElementosDAO();
	}

	/**
	 * cria um elemento
	 * @param elemento
	 * @throws POApplicationException
	 */
	public void criarElemento(ElementoVO elemento) throws POApplicationException {
		try {
			logger.info("Criando elemento");
			elementosDAO.criarElemento(elemento);
		} catch (SQLException e) {
			throw new POApplicationException(e.getMessage());
		}
	}

	/**
	 * remove todos elementos de uma tela
	 * @param telaId
	 * @throws POApplicationException
	 */
	public void removerElementosTela(Integer telaId) throws POApplicationException {
		try {
			logger.info("Removendo elementos da tela " + telaId);
			elementosDAO.removerElementosTela(telaId);
		} catch (SQLException e) {
			throw new POApplicationException(e.getMessage());
		}
	}

	/**
	 * busca todos os elementos de uma tela
	 * @param elemento
	 * @return
	 * @throws POApplicationException
	 */
	public Collection<ElementoVO> buscarElementos(ElementoVO elemento) throws POApplicationException {
		try {
			logger.info("Buscando elementos da tela " + elemento.getTelaId());
			return elementosDAO.buscarElementos(elemento);
		} catch (SQLException e) {
			throw new POApplicationException(e.getMessage());
		}
	}
}
